﻿Public Class FLKelas

    'member variables
    Private _cKelas As CKelas
    Private _cGuruMengajar As CGuruMengajar
    Private _dView As DataView


    'properties
    Public Property SelectedID As Integer
    Public Property SelectedNama As String
    Public Property SelectedKapasitas As Integer
    Public Property SelectedTingkatan As Integer

    'events
    Public Event DataTerpilih()

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        'Me.Text = My.Settings.NamaAplikasi & " [Pilih Kelas]"

        'tampilkan data ke control
        _cKelas = New CKelas
        _dView = _cKelas.getAll.DefaultView
        DGMaster.DataSource = _dView
    End Sub

#Region "SettinganAwal"
    '-----------------------------------------------------------------------------------------------
    Private IsFormBeingDragged As Boolean = False
    Private MouseDownX As Integer
    Private MouseDownY As Integer

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles LabelJudul.MouseDown, MyBase.MouseDown
        If e.Button = MouseButtons.Left Then
            IsFormBeingDragged = True
            MouseDownX = e.X
            MouseDownY = e.Y
        End If
    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseUp, LabelJudul.MouseUp
        If e.Button = MouseButtons.Left Then
            IsFormBeingDragged = False
        End If
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseMove, LabelJudul.MouseMove
        If IsFormBeingDragged Then
            Dim temp As Point = New Point()

            temp.X = Me.Location.X + (e.X - MouseDownX)
            temp.Y = Me.Location.Y + (e.Y - MouseDownY)
            Me.Location = temp
            temp = Nothing
        End If
    End Sub

    Private Sub Panel1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim p As New Pen(Color.FromArgb(213, 251, 185), 2)
        'set text box border
        PaintTextBox(Me, e.Graphics, p)

        p.Dispose()
    End Sub

    Private Sub PaintTextBox(cont As Control, g As Graphics, p As Pen)
        For Each ctl As Control In cont.Controls
            If ctl.Visible Then
                p.Color = ctl.BackColor
                If (TypeOf ctl Is TextBox) Or (TypeOf ctl Is ComboBox) Or (TypeOf ctl Is PictureBox) Then
                    g.DrawRectangle(p, New Rectangle(ctl.Location + New Size(1, 1), ctl.Size - New Size(2, 2)))
                ElseIf TypeOf ctl Is Panel Then
                    PaintTextBox(ctl, g, p)
                ElseIf TypeOf ctl Is GroupBox Then
                    PaintTextBox(ctl, g, p)
                End If
            End If

        Next
    End Sub

    Private Sub SetRegionTextBox(cont As Control)
        For Each ctl As Control In cont.Controls
            If (TypeOf ctl Is TextBox) Or (TypeOf ctl Is ComboBox) Or (TypeOf ctl Is PictureBox) Then
                If ctl.Region Is Nothing Then
                    ctl.Region = New Region(New Rectangle(2, 2, ctl.Width - 4, ctl.Height - 4))
                Else
                    ctl.Region = Nothing
                End If
            ElseIf TypeOf ctl Is Panel Then
                SetRegionTextBox(ctl)
            ElseIf TypeOf ctl Is GroupBox Then
                SetRegionTextBox(ctl)
            End If
        Next
    End Sub

    Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click
        Me.Close()
    End Sub

    '-----------------------------------------------------------------------------------------------
#End Region

    ''' <summary>
    ''' Data kelas yang diajar oleh guru pada semester tertentu
    ''' </summary>
    ''' <param name="idGuru"></param>
    ''' <param name="idSemester"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal idGuru As Integer, ByVal idSemester As Integer)
        Me.New()

        'tampilkan data ke control
        _cGuruMengajar = New CGuruMengajar
        _dView = _cGuruMengajar.getKelasOnlyByIdGuruIdSemester(idGuru, idSemester).DefaultView
        DGMaster.DataSource = _dView
    End Sub

    Private Sub BtnPilih_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPilih.Click
        SetSelectedData()
        RaiseEvent DataTerpilih()
        Me.Close()
    End Sub

    Private Sub BtnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBatal.Click
        Me.Close()
    End Sub

    Private Sub SetSelectedData()
        Me.SelectedID = DGMaster.CurrentRow.Cells("CID").Value
        Me.SelectedNama = DGMaster.CurrentRow.Cells("CNama").Value
        Me.SelectedKapasitas = DGMaster.CurrentRow.Cells("CKapasitas").Value
        Me.SelectedTingkatan = DGMaster.CurrentRow.Cells("CTingkat").Value
    End Sub

    Private Sub DGMaster_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGMaster.CellContentClick
        'isi ke property
        SetSelectedData()
    End Sub

    Private Sub FLKelas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'set text box border
        SetRegionTextBox(Me)

        'set enable tombol pilih
        If DGMaster.RowCount > 0 Then
            BtnPilih.Enabled = True
        Else
            BtnPilih.Enabled = False
        End If

    End Sub


    Private Sub TBNama_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBNama.TextChanged
        'filter data kelas berdasarkan nama
        _dView.RowFilter = "nama like '" & TBNama.Text.Trim & "%'"
    End Sub
End Class